﻿

#region using namespace
using System.Collections.Generic;
using System.Linq;
using DTO;
using System;
#endregion

namespace DAO
{
    public class TuKhoaDuongDAO
    {
        // tim tu khoa duong dua vao ma tu khoa duong.
        public List<TuKhoaDuongDTO> Search(string strInput)
        {
            TuKhoaDuongDTO tukhoaduongDTO = null;
            strInput = strInput.Replace(@"'", @"''");
            List<TuKhoaDuongDTO> lsttukhoaduong = getAllTuKhoaDuong();

            List<TuKhoaDuongDTO> ilsttukhoaduong = new List<TuKhoaDuongDTO>();
            
            foreach (TuKhoaDuongDTO tukhoa in lsttukhoaduong)
            {
                if (strInput.Contains(tukhoa.TuKhoaDuong)||tukhoa.TuKhoaDuong.Contains(strInput))
                {
                    tukhoaduongDTO = new TuKhoaDuongDTO();

                    tukhoaduongDTO.MaTuKhoaDuong = tukhoa.MaTuKhoaDuong;
                    tukhoaduongDTO.MaDuong = tukhoa.MaDuong;
                    tukhoaduongDTO.TuKhoaDuong = tukhoa.TuKhoaDuong;

                    ilsttukhoaduong.Add(tukhoaduongDTO);
                }
            }               
            return ilsttukhoaduong;
        }

        //lay tat ca cac thuoc tinh cua bang tu khoa duong.
        public static List<TuKhoaDuongDTO> getAllTuKhoaDuong()
        {
            IList<TUKHOADUONG> ilsttkduong;
            List<TuKhoaDuongDTO> lsttkduong = new List<TuKhoaDuongDTO>();
            TuKhoaDuongDTO tkduongDTO = null;

            using (var context = new DataContext(GlobalDatabase.ConnectString))
            {
                ilsttkduong = (from tkduong in context.TUKHOADUONGs select tkduong).ToList();
            }

            for (int i = 0; i < ilsttkduong.Count; i++)
            {
                tkduongDTO = new TuKhoaDuongDTO();

                tkduongDTO.MaDuong = (int)ilsttkduong[i].MaDuong;
                tkduongDTO.TuKhoaDuong = ilsttkduong[i].TuKhoaDuong;
                tkduongDTO.MaTuKhoaDuong = ilsttkduong[i].MaTuKhoaDuong;


                lsttkduong.Add(tkduongDTO);
            }

            return lsttkduong;
        }

        public List<TuKhoaDuongDTO> AutoCompleteTuKhoaDuong(string strInput)
        {
            List<TuKhoaDuongDTO> lsttkduongDTO = new List<TuKhoaDuongDTO>();
            TuKhoaDuongDTO tukhoaduongDTO = null;

            strInput = strInput.Replace(@"'", @"''");

            List<TuKhoaDuongDTO> lsttukhoaduong = getAllTuKhoaDuong();


            foreach (TuKhoaDuongDTO tukhoa in lsttukhoaduong)
            {
                if (strInput == tukhoa.TuKhoaDuong)
                {
                    tukhoaduongDTO = new TuKhoaDuongDTO();

                    tukhoaduongDTO.MaTuKhoaDuong = tukhoa.MaTuKhoaDuong;
                    tukhoaduongDTO.MaDuong = tukhoa.MaDuong;
                    tukhoaduongDTO.TuKhoaDuong = tukhoa.TuKhoaDuong;

                    lsttkduongDTO.Add(tukhoaduongDTO);
                }
            }
            return lsttkduongDTO;
        }

        public List<TuKhoaDuongDTO> AutoCompleteTuKhoaDuongTheoDichVu(string strInput, int MaDichVu)
        {
            List<TuKhoaDuongDTO> lstTuKhoaDuong = new List<TuKhoaDuongDTO>();

            List<TuKhoaDuongDTO> lsttukhoaduong = getAllTuKhoaDuong();
            TuKhoaDuongDTO tuKhoaDuong = null;


            List<DuongDTO> lstduong = DuongDAO.GetAllDuongDTO(); // lay du lieu trong bang Ten Dia Diem
            List<DuLieuDTO> dulieuDTO = DuLieuDAO.getAllDuLieu();  // lay du lieu trong bang DuLieu

           
            foreach (TuKhoaDuongDTO tukhoa in lsttukhoaduong)
            {
                foreach (DuongDTO duong in lstduong)
                {
                    foreach (DuLieuDTO dlieu in dulieuDTO)
                    {
                        if ((tukhoa.TuKhoaDuong == strInput) &&
                            tukhoa.MaDuong == duong.MaDuong &&
                            duong.MaDuong == dlieu.MaDuong &&
                            dlieu.MaDichVu == MaDichVu)
                        {
                            tuKhoaDuong = new TuKhoaDuongDTO();

                            tuKhoaDuong.TuKhoaDuong = tukhoa.TuKhoaDuong;
                            tuKhoaDuong.MaTuKhoaDuong = tukhoa.MaTuKhoaDuong;
                            tuKhoaDuong.MaDuong = tukhoa.MaDuong;

                            lstTuKhoaDuong.Add(tuKhoaDuong);

                            if (lstTuKhoaDuong.Count == 10)
                            {
                                break;
                            }
                        }
                    }
                    if (lstTuKhoaDuong.Count == 10)
                    {
                        break;
                    }

                }
                if (lstTuKhoaDuong.Count == 10)
                {
                    break;
                }
            }

            return lstTuKhoaDuong;

        }

        
    }
}
